From: [email-masked]
Date: Tue, 22 Mar 94 15:27:06 +0100

Concerning Jack's question about what additional information we would like
to have added to the CPI-C Spec, here are some points that seem to need more
explanation:

1)  The interaction between the two mechanisms controlling the transaction
    mode, the tx_set_transaction_control() and CMSTC calls should be described.
    Especially the meaning of the combination TX_UNCHAINED with 
    CM_CHAINED_TRANSACTIONS is not clear.

2)  The current version of CPI-C does not thoroughly describe the usage
    of tx_begin(). Especially, using chained transactions, that is having the
    transaction_control characteristic set to CM_CHAINED_TRANSACTIONS before
    conversation startup, it is not stated that tx_begin() must be called
    before the conversation is allocated. If tx_begin() is not called in
    advance, the result is that the CPI-C conversation is in transaction 
    while the TP, from the sight of the TX interface, is not. Thus it is 
    possible that a CMRCV gets the status_received notification of 
    CM_TAKE_COMMIT, resulting from the superior having called CMPREP, but
    the TP is currently not allowed to call tx_commit() since the TX state
    prohibits this. 

    Additionally, using also local resources within the global transaction,
    e.g. an INFORMIX database, the begin of the transaction is indicated
    to that resource by means of the tx_begin() call (which results in the 
    XA function xa_start() to be called for the RM, see the TX specification).
    Thus, not calling tx_begin() before allocating the first conversation
    of the TP belonging to the global transaction has the effect, that the
    operations performed on the local resources are not part of the global
    transaction and therefore are not controlled by the two phase commit
    procedure, until tx_begin() is called.

    So it seems, that in chained transactions tx_begin must be called before
    an Allocate call with sync_level CM_SYNC_POINT. But the CPI-C document
    does not describe which CPI-C return code should indicate this error.

    On the other hand with unchained transactions the following call   
    sequence may be senseful:

	tx_open
	Set_Begin_Transaction CM_BEGIN_EXPLICIT
	Set_Sync_Level CM_SYNC_POINT
	Allocate
	... 
	tx_begin

3)  Chapter 3 should contain some examples using CPI-C and TX.
    We have made 2 examples and SNI has sent them as X/Open CR. We will make
    an additional example containing unchained transactions and SNI will send
    it also as X/Open CR.

4)  There is no X/Open document that describes the mapping from OSI TP to TX.

    For example: Chapter D.2.3 describes that the Begin Transaction Parameter
    of the TP-BEGIN-DIALOGUE indication is evaluated by a resource recovery
    interface. What does this exactly mean with TX? Note that the other
    interfaces XATMI and TxRPC will not have this problem, because they
    do not need the TX interface on the subordinate side. So the CPI-C
    document should describe this mapping.

    Regards,
    Uwe

-----------------------------------------------------------------------------
Uwe Goellner                         |   Tel.:  07531-87-4628
Computer Gesellschaft Konstanz mbH   |   Fax:   07531-87-4888
Max-Stromeyer-Strasse 116            |   Email: [email-masked]
78467 Konstanz                       | 
Germany                              |
=============================================================================